import axios from 'axios'
import { SystemUser, QueryParams, PaginationData } from '@/types'

// 用户API基础路径
const API_BASE = '/api/system/users'

/**
 * 获取用户列表
 * @param params 查询参数
 * @returns 分页用户数据
 */
export const getUserList = (params: QueryParams) => {
  return axios.get<PaginationData<SystemUser>>(API_BASE, { params })
}

/**
 * 获取用户详情
 * @param id 用户ID
 * @returns 用户详情
 */
export const getUser = (id: number) => {
  return axios.get<SystemUser>(`${API_BASE}/${id}`)
}

/**
 * 创建用户
 * @param data 用户数据
 * @returns 创建结果
 */
export const createUser = (data: Omit<SystemUser, 'id' | 'createTime' | 'lastLoginTime'>) => {
  return axios.post<SystemUser>(API_BASE, data)
}

/**
 * 更新用户
 * @param id 用户ID
 * @param data 用户数据
 * @returns 更新结果
 */
export const updateUser = (id: number, data: Partial<SystemUser>) => {
  return axios.put<SystemUser>(`${API_BASE}/${id}`, data)
}

/**
 * 删除用户
 * @param id 用户ID
 * @returns 删除结果
 */
export const deleteUser = (id: number) => {
  return axios.delete<SystemUser>(`${API_BASE}/${id}`)
}

/**
 * 批量删除用户
 * @param ids 用户ID数组
 * @returns 批量删除结果
 */
export const batchDeleteUsers = (ids: number[]) => {
  return axios.delete<SystemUser[]>(API_BASE, { data: { ids } })
}

/**
 * 更新用户状态
 * @param id 用户ID
 * @param status 状态值
 * @returns 更新结果
 */
export const updateUserStatus = (id: number, status: string) => {
  return axios.patch<SystemUser>(`${API_BASE}/${id}/status`, { status })
}

/**
 * 重置用户密码
 * @param id 用户ID
 * @returns 重置结果
 */
export const resetUserPassword = (id: number) => {
  return axios.patch<{ password: string }>(`${API_BASE}/${id}/password/reset`)
}

/**
 * 更新用户密码
 * @param id 用户ID
 * @param oldPassword 旧密码
 * @param newPassword 新密码
 * @returns 更新结果
 */
export const updateUserPassword = (id: number, oldPassword: string, newPassword: string) => {
  return axios.patch<null>(`${API_BASE}/${id}/password`, { oldPassword, newPassword })
} 